﻿using System.Collections.Generic;

namespace DoNet.TenPay
{
    /// <summary>
    /// 支付者
    /// 商户和服务商 返回的字段不一致
    /// 商户 返回 openid
    /// 服务商 返回 sp_openid sub_openid
    /// </summary>
    public class payer_v3
    {
        #region 商户
        /// <summary>
        /// 用户服务标识 用户在服务商appid下的唯一标识。 示例值：oUpF8uMuAJO_M2pxb1Q9zNjWeS6o
        /// </summary>
        public string openid { get; set; }
        #endregion

        #region 服务商
        /// <summary>
        /// 用户服务标识 用户在服务商appid下的唯一标识。 示例值：oUpF8uMuAJO_M2pxb1Q9zNjWeS6o
        /// </summary>
        public string sp_openid { get; set; }
        /// <summary>
        /// 用户子标识 用户在子商户appid下的唯一标识。如果返回sub_appid，那么sub_openid一定会返回 示例值：oUpF8uMuAJO_M2pxb1Q9zNjWeS6o
        /// </summary>
        public string sub_openid { get; set; }
        #endregion
    }

    /// <summary>
    /// 订单金额 请求参数
    /// </summary>
    public class amount_base
    {
        /// <summary>
        /// 总金额 订单总金额，单位为分。 示例值：100
        /// </summary>
        public int total { get; set; }
        /// <summary>
        /// 货币类型 CNY：人民币，境内商户号仅支持人民币。 示例值：CNY
        /// </summary>
        public string currency { get; set; }
    }

    /// <summary>
    /// 订单金额 返回参数
    /// </summary>
    public class amount_v3 : amount_base
    {
        /// <summary>
        /// 用户支付金额 用户支付金额，单位为分。（指使用优惠券的情况下，这里等于总金额-优惠券金额） 示例值：100
        /// </summary>
        public int payer_total { get; set; }
        /// <summary>
        /// 用户支付币种 用户支付币种 示例值：CNY
        /// </summary>
        public string payer_currency { get; set; }
    }

    /// <summary>
    /// 场景信息 返回参数
    /// </summary>
    public class scene_info_base
    {
        /// <summary>
        /// 商户端设备号 商户端设备号（发起扣款请求的商户服务器设备号）。 示例值：013467007045764
        /// </summary>
        public string device_id { get; set; }
    }

    /// <summary>
    /// 场景信息 请求参数
    /// </summary>
    public class scene_info_v3 : scene_info_base
    {
        /// <summary>
        /// 用户的客户端IP，支持IPv4和IPv6两种格式的IP地址。 示例值：14.23.150.211
        /// </summary>
        public string payer_client_ip { get; set; }
        /// <summary>
        /// 商户门店信息
        /// </summary>
        public store_info store_info { get; set; }
    }

    /// <summary>
    /// 商户门店信息
    /// </summary>
    public class store_info
    {
        /// <summary>
        /// 门店编号 商户侧门店编号 示例值：0001
        /// </summary>
        public string id { get; set; }
        /// <summary>
        /// 门店名称 商户侧门店名称 示例值：腾讯大厦分店
        /// </summary>
        public string name { get; set; }
        /// <summary>
        /// 地区编码，详细请见省市区编号对照表。 示例值：440305
        /// </summary>
        public string area_code { get; set; }
        /// <summary>
        /// 详细地址 详细的商户门店地址 示例值：广东省深圳市南山区科技中一道10000号
        /// </summary>
        public string address { get; set; }
    }

    /// <summary>
    /// 优惠功能 请求参数
    /// </summary>
    public class detail_req
    {
        /// <summary>
        /// 订单原价 
        /// 1、商户侧一张小票订单可能被分多次支付，订单原价用于记录整张小票的交易金额。
        /// 2、当订单原价与支付金额不相等，则不享受优惠。
        /// 3、该字段主要用于防止同一张小票分多次支付，以享受多次优惠的情况，正常支付订单不必上传此参数。
        /// 示例值：608800
        /// </summary>
        public int cost_price { get; set; }
        /// <summary>
        /// 商品小票ID 示例值：微信123
        /// </summary>
        public string invoice_id { get; set; }
        /// <summary>
        /// 优惠名称  示例值：单品惠-6
        /// </summary>
        public string name { get; set; }
        /// <summary>
        /// 优惠范围  GLOBAL：全场代金券 SINGLE：单品优惠 示例值：GLOBAL
        /// </summary>
        public string scope { get; set; }
        /// <summary>
        /// 优惠类型  CASH：充值 NOCASH：预充值 示例值：CASH
        /// </summary>
        public string type { get; set; }
        /// <summary>
        /// 活动ID 示例值：931386
        /// </summary>
        public string stock_id { get; set; }
        /// <summary>
        /// 微信出资 单位为分 示例值：0
        /// </summary>
        public int wechatpay_contribute { get; set; }
        /// <summary>
        /// 商户出资 单位为分 示例值：0
        /// </summary>
        public int merchant_contribute { get; set; }
        /// <summary>
        /// 其他出资 单位为分 示例值：0
        /// </summary>
        public int other_contribute { get; set; }
        /// <summary>
        /// 优惠币种 CNY：人民币，境内商户号仅支持人民币。 示例值：CNY
        /// </summary>
        public string currency { get; set; }
        /// <summary>
        /// 单品列表
        /// </summary>
        public List<goods_detail_v3> goods_detail { get; set; }
    }
    /// <summary>
    /// 单品列表 请求参数
    /// </summary>
    public class goods_detail_req
    {
        /// <summary>
        /// 商户侧商品编码 由半角的大小写字母、数字、中划线、下划线中的一种或几种组成。 示例值：1246464644
        /// </summary>
        public string merchant_goods_id { get; set; }
        /// <summary>
        /// 微信支付商品编码 微信支付定义的统一商品编号（没有可不传） 示例值：1001
        /// </summary>
        public string wechatpay_goods_id { get; set; }
        /// <summary>
        /// 商品名称 商品的实际名称 示例值：iPhoneX 256G
        /// </summary>
        public string goods_name { get; set; }
        /// <summary>
        /// 商品数量 用户购买的数量 示例值：1
        /// </summary>
        public int quantity { get; set; }
        /// <summary>
        /// 商品单价，单位为分 示例值：0
        /// </summary>
        public int unit_price { get; set; }
    }

    /// <summary>
    /// 优惠功能 返回参数
    /// </summary>
    public class promotion_detail_v3
    {
        /// <summary>
        /// 券ID 示例值：109519
        /// </summary>
        public string coupon_id { get; set; }
        /// <summary>
        /// 优惠名称  示例值：单品惠-6
        /// </summary>
        public string name { get; set; }
        /// <summary>
        /// 优惠范围  GLOBAL：全场代金券 SINGLE：单品优惠 示例值：GLOBAL
        /// </summary>
        public string scope { get; set; }
        /// <summary>
        /// 优惠类型  CASH：充值 NOCASH：预充值 示例值：CASH
        /// </summary>
        public string type { get; set; }
        /// <summary>
        /// 优惠券面额 示例值：100
        /// </summary>
        public int amount { get; set; }
        /// <summary>
        /// 活动ID 示例值：931386
        /// </summary>
        public string stock_id { get; set; }
        /// <summary>
        /// 微信出资 单位为分 示例值：0
        /// </summary>
        public int wechatpay_contribute { get; set; }
        /// <summary>
        /// 商户出资 单位为分 示例值：0
        /// </summary>
        public int merchant_contribute { get; set; }
        /// <summary>
        /// 其他出资 单位为分 示例值：0
        /// </summary>
        public int other_contribute { get; set; }
        /// <summary>
        /// 优惠币种 CNY：人民币，境内商户号仅支持人民币。 示例值：CNY
        /// </summary>
        public string currency { get; set; }
        /// <summary>
        /// 单品列表
        /// </summary>
        public List<goods_detail_v3> goods_detail { get; set; }
    }
    /// <summary>
    /// 单品列表 返回参数
    /// </summary>
    public class goods_detail_v3
    {
        /// <summary>
        /// 商品编码 示例值：M1006
        /// </summary>
        public string goods_id { get; set; }
        /// <summary>
        /// 商品数量 用户购买的数量 示例值：1
        /// </summary>
        public int quantity { get; set; }
        /// <summary>
        /// 商品单价，单位为分 示例值：0
        /// </summary>
        public int unit_price { get; set; }
        /// <summary>
        /// 商品优惠金额 示例值：0
        /// </summary>
        public int discount_amount { get; set; }
        /// <summary>
        /// 商品备注 示例值：商品备注信息
        /// </summary>
        public string goods_remark { get; set; }
    }
}
